/**
 * https://www.uviewui.com/js/http.html
 */

import store from "@/store";

module.exports = (vm) => {
  // 初始化请求配置
  uni.$u.http.setConfig((config) => {
    /* config 为默认全局配置*/
    config.baseURL = "http://py12306.learnerhub.net"; // api 根域名，本地开发大概就是 localhost(看你怎么启动的后端服务器)
    return config;
  });

  // 请求拦截
  uni.$u.http.interceptors.request.use(
    (config) => {
      const authToken = uni.getStorageSync("auth-token");
      if (authToken) {
        config.header.Authorization = `Bearer ${authToken}`;
      }

      return config;
    },
    (config) => {
      return Promise.reject(config);
    }
  );

  // 响应拦截，对响应成功做点什么 可使用 async await 做异步操作
  uni.$u.http.interceptors.response.use(
    (response) => {
      const data = response.data || {};

      if (data.code === 0) {
        return Promise.resolve(data);
      } else {
        if ([110001, 110003, 110005].includes(data.code)) {
          // 以上 code 都是用户 auth 有问题，清空一下 store 数据
          store.dispatch("revertAuth");
        }

        uni.hideLoading();
        uni.showToast({
          icon: "error",
          duration: 2000,
          title: data.msg || response.msg,
        });
        return Promise.reject(response);
      }
    },
    (response) => {
      uni.hideLoading();
      // 对响应错误做点什么 （statusCode !== 200）
      const data = response.data || {};
      uni.showToast({
        icon: "error",
        duration: 2000,
        title: data.msg || response.msg,
      });
      return Promise.reject(response);
    }
  );
};
